[Home] Python으로 돌아가기

@staticmethod 설명

📖 목차


1. 정의

@staticmethod는 파이썬 클래스 내부에서 정의되는 메서드를 "정적 메서드(static method)"로 지정하기 위해 사용하는 데코레이터이다. 정적 메서드는 클래스나 인스턴스의 상태와 무관하게 작동하는 독립적인 메서드로, 클래스 이름 또는 인스턴스를 통해 호출할 수 있다.

2. 사용 목적

3. 사용 방법

정적 메서드는 클래스 내부에서 정의하되, @staticmethod 데코레이터를 사용하고, 메서드 정의 시 selfcls를 첫 번째 인자로 받지 않는다. 호출 시에는 클래스명 또는 인스턴스를 통해 호출할 수 있다.


class Math:
    @staticmethod
    def add(x, y):
        return x + y

# 호출 방법
Math.add(3, 5)        # 클래스명으로 호출
m = Math()
m.add(3, 5)           # 인스턴스로도 호출 가능

4. 예제


class Account:
    numOfAccounts = 0

    def __init__(self, name):
        self.name = name
        Account.numOfAccounts += 1

    @staticmethod
    def reset_count():
        Account.numOfAccounts = 0

5. 관련 메서드와의 비교

구분 일반 메서드 클래스 메서드 정적 메서드
데코레이터 (없음) @classmethod @staticmethod
첫 번째 인자 self (인스턴스) cls (클래스) 없음
클래스 변수 접근 가능 가능 클래스명을 통해 수동 접근
인스턴스 변수 접근 가능 불가능 불가능
용도 인스턴스 동작 구현 클래스 상태 제어 독립적 기능 제공